/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * InterfaceFazerCadastro.java
 *
 * Created on 23/06/2010, 20:12:08
 */
package gui;

import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

import controller.BolaoFacade;


import util.Input;
import bean.Jogador;
import exception.ExceptionData;
import exception.ExceptionEmail;
import exception.ExceptionGrupo;
import exception.ExceptionNaturalidade;
import exception.ExceptionSenha;

/**
 * Interface Fazer Cadastro
 * @author Claudio Cardoso, Daniel Leite, Lucas Sampaio, Matheus Sampaio
 * @version 1.0
 */
public class InterfaceFazerCadastro extends javax.swing.JFrame {
    
		private String caminhoFoto = "generic_avatar.png";


        /**
        * 
	 	*/
		private static final long serialVersionUID = -6833478606235307296L;

        private BolaoFacade bolaoFacade = new BolaoFacade();

    /** Creates new form InterfaceFazerCadastro */
    public InterfaceFazerCadastro() {
        initComponents();
        setLocationRelativeTo(null);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        nomeFazerCadastro = new java.awt.Label();
        dataNascimentoFazerCadastro = new java.awt.Label();
        separador1 = new java.awt.Label();
        separador2 = new java.awt.Label();
        naturalidadeFazerCadastro = new java.awt.Label();
        paisQueTorceFazerCadastro = new java.awt.Label();
        emailFazerCadastro = new java.awt.Label();
        senhaFazerCadastro = new java.awt.Label();
        textSenhaFazerCadastro = new javax.swing.JPasswordField();
        fotoFazerCadastro = new java.awt.Label();
        textNomeFazerCadastro = new javax.swing.JTextField();
        textNaturalidadeFazerCadastro = new javax.swing.JTextField();
        botaoEscolherFoto = new javax.swing.JButton();
        escolhePaisFazerCadastro = new javax.swing.JComboBox();
        textEmailFazerCadastro = new javax.swing.JTextField();
        voltarFazerCadastro = new javax.swing.JButton();
        confirmaCadastroFazerCadastro = new javax.swing.JButton();
        diaNascimentoFazerCadastro = new javax.swing.JComboBox();
        mesNascimentoFazerCadastro = new javax.swing.JComboBox();
        anoNascimentoFazerCadastro = new javax.swing.JComboBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Bolao da Copa P2 - Cadastrar");
        setMinimumSize(new java.awt.Dimension(485, 300));
        getContentPane().setLayout(null);

        nomeFazerCadastro.setText("Nome: ");
        getContentPane().add(nomeFazerCadastro);
        nomeFazerCadastro.setBounds(10, 11, 56, 20);

        dataNascimentoFazerCadastro.setText("Data de Nascimento: ");
        getContentPane().add(dataNascimentoFazerCadastro);
        dataNascimentoFazerCadastro.setBounds(10, 41, 123, 20);

        separador1.setText("/");
        getContentPane().add(separador1);
        separador1.setBounds(230, 40, 10, 20);

        separador2.setText("/");
        getContentPane().add(separador2);
        separador2.setBounds(310, 40, 10, 20);

        naturalidadeFazerCadastro.setText("Naturalidade: ");
        getContentPane().add(naturalidadeFazerCadastro);
        naturalidadeFazerCadastro.setBounds(10, 70, 81, 20);

        paisQueTorceFazerCadastro.setText("Pais Que Torce: ");
        getContentPane().add(paisQueTorceFazerCadastro);
        paisQueTorceFazerCadastro.setBounds(10, 130, 95, 20);

        emailFazerCadastro.setText("Email: ");
        getContentPane().add(emailFazerCadastro);
        emailFazerCadastro.setBounds(10, 160, 42, 20);

        senhaFazerCadastro.setText("Senha: ");
        getContentPane().add(senhaFazerCadastro);
        senhaFazerCadastro.setBounds(10, 190, 46, 20);
        getContentPane().add(textSenhaFazerCadastro);
        textSenhaFazerCadastro.setBounds(160, 190, 301, 20);

        fotoFazerCadastro.setText("Foto: ");
        getContentPane().add(fotoFazerCadastro);
        fotoFazerCadastro.setBounds(10, 100, 34, 20);
        getContentPane().add(textNomeFazerCadastro);
        textNomeFazerCadastro.setBounds(158, 11, 301, 20);
        getContentPane().add(textNaturalidadeFazerCadastro);
        textNaturalidadeFazerCadastro.setBounds(160, 70, 301, 20);

        botaoEscolherFoto.setText("Escolher Foto");
        botaoEscolherFoto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoEscolherFotoActionPerformed(evt);
            }
        });
        getContentPane().add(botaoEscolherFoto);
        botaoEscolherFoto.setBounds(160, 100, 97, 23);

        escolhePaisFazerCadastro.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Africa do Sul","Holanda","Costa do Marfim","Japao","Brasil","Portugal","Gana","Coreia do Sul","Espanha","Eslovenia",
            "Camaroes","Coreia do Norte","Italia","Suecia","Nigeria","Australia","Alemanha","Greacia","Argelia","Nova Zelandia","Argentina","Servia",
            "Paraguai","Estados Unidos","Inglaterra","Dinamarca","Chile","Mexico","Franca","Eslovaquia","Uruguai","Honduras" }));
getContentPane().add(escolhePaisFazerCadastro);
escolhePaisFazerCadastro.setBounds(160, 130, 300, 20);
getContentPane().add(textEmailFazerCadastro);
textEmailFazerCadastro.setBounds(160, 160, 301, 20);

voltarFazerCadastro.setText("Voltar");
voltarFazerCadastro.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        voltarFazerCadastroActionPerformed(evt);
    }
    });
    getContentPane().add(voltarFazerCadastro);
    voltarFazerCadastro.setBounds(30, 230, 70, 23);

    confirmaCadastroFazerCadastro.setText("Confirmar Cadastro");
    confirmaCadastroFazerCadastro.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            confirmaCadastroFazerCadastroActionPerformed(evt);
        }
    });
    getContentPane().add(confirmaCadastroFazerCadastro);
    confirmaCadastroFazerCadastro.setBounds(317, 230, 140, 23);

    diaNascimentoFazerCadastro.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" }));
    getContentPane().add(diaNascimentoFazerCadastro);
    diaNascimentoFazerCadastro.setBounds(158, 41, 64, 20);

    mesNascimentoFazerCadastro.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" }));
    getContentPane().add(mesNascimentoFazerCadastro);
    mesNascimentoFazerCadastro.setBounds(240, 40, 60, 20);

    anoNascimentoFazerCadastro.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1950", "1951", "1952", "1953", "1954", "1955", "1956", "1957", "1958", "1959", "1960", "1961", "1962", "1963", "1964", "1965", "1966", "1967", "1968", "1969", "1970",
        "1971", "1972", "1973", "1974", "1975", "1976", "1977", "1978", "1979", "1980", "1981", "1982", "1983", "1984", "1985", "1986", "1987", "1988", "1989", "1990", "1991",
        "1992", "1993", "1994", "1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010" }));
getContentPane().add(anoNascimentoFazerCadastro);
anoNascimentoFazerCadastro.setBounds(330, 40, 70, 20);

pack();
}// </editor-fold>//GEN-END:initComponents

    private void botaoEscolherFotoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botaoEscolherFotoActionPerformed
        JOptionPane.showMessageDialog(this, "Atenção: Tamanho máximo da foto 100x100 pixels. Fotos maiores que esse tamanho serão cortadas");
    	caminhoFoto = getArquivo();
	}//GEN-LAST:event_botaoEscolherFotoActionPerformed

    @SuppressWarnings("deprecation")
	private void confirmaCadastroFazerCadastroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_confirmaCadastroFazerCadastroActionPerformed
        String paisQueTorce, data;

        int dia = Integer.parseInt(diaNascimentoFazerCadastro.getModel().getSelectedItem().toString());
        int mes = Integer.parseInt(mesNascimentoFazerCadastro.getModel().getSelectedItem().toString());
        int ano = Integer.parseInt(anoNascimentoFazerCadastro.getModel().getSelectedItem().toString());

        try {
            data = Input.dataNascimentoGrafico(dia, mes, ano);
            
            Input.checaEmail(textEmailFazerCadastro.getText());
            Input.checaNaturalidade(textNaturalidadeFazerCadastro.getText());
            Input.checaSenha(textSenhaFazerCadastro.getText());
            
            if (bolaoFacade.pesquisaJogador(textEmailFazerCadastro.getText()) != null)
            	throw new ExceptionEmail("Email já está sendo usado.");
            
            paisQueTorce = escolhePaisFazerCadastro.getModel().getSelectedItem().toString();
            Jogador jogador = new Jogador(textNomeFazerCadastro.getText(), data, textNaturalidadeFazerCadastro.getText(),
                    paisQueTorce, textEmailFazerCadastro.getText(), textSenhaFazerCadastro.getText(), caminhoFoto);

            jogador.adicionaGrupo(bolaoFacade.pesquisaGrupo(paisQueTorce));
            jogador.adicionaGrupo(bolaoFacade.pesquisaGrupo("Todos"));
            bolaoFacade.pesquisaGrupo(paisQueTorce).adicionaJogador(jogador);
            bolaoFacade.pesquisaGrupo("Todos").adicionaJogador(jogador);
            bolaoFacade.adicionaJogador(jogador);
            
        } catch (ExceptionEmail e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
            return;
        } catch (ExceptionData e) {
        	JOptionPane.showMessageDialog(null, e.getMessage());
        	return;
        } catch (ExceptionNaturalidade e) {
        	JOptionPane.showMessageDialog(null, e.getMessage());
        	return;
		} catch (ExceptionSenha e) {
			JOptionPane.showMessageDialog(null, e.getMessage());
        	return;
		} catch (ExceptionGrupo e) {
			JOptionPane.showMessageDialog(null, e.getMessage());
        	return;
        }
		
		JOptionPane.showMessageDialog(null, "Cadastrado com sucesso.");
    	
		new InterfaceInicial().setVisible(true);
		dispose();
    }//GEN-LAST:event_confirmaCadastroFazerCadastroActionPerformed

    private void voltarFazerCadastroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_voltarFazerCadastroActionPerformed
        new InterfaceInicial().setVisible(true);
        dispose();
    }//GEN-LAST:event_voltarFazerCadastroActionPerformed


    /**
     * Retorna o caminho da Foto do Usuario
     * @return
     *      Caminho da Foto do Usuario
     */
    private String getArquivo() {
        String caminho = "";

        try {
            JFileChooser fileChooser = new JFileChooser();
            fileChooser.setFileSelectionMode( JFileChooser.FILES_ONLY );
            int result = fileChooser.showOpenDialog( this );

            if (result == JFileChooser.CANCEL_OPTION)
            	return caminhoFoto;

            File fileName = fileChooser.getSelectedFile();
            caminho = fileName.getAbsolutePath();
            if ( ( fileName == null ) || ( fileName.getName().equals ( "" ) ) ) {
               	JOptionPane.showMessageDialog ( null, "Nome do arquivo invalido", "Nome do arquivo invalido", JOptionPane.ERROR_MESSAGE);
               	return caminhoFoto;
            }

            bolaoFacade.atualizaDados();
		} catch (Exception e) {
	            JOptionPane.showMessageDialog (this, "Arquivo invalido.");
		}

       return caminho;
       }



    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new InterfaceFazerCadastro().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox anoNascimentoFazerCadastro;
    private javax.swing.JButton botaoEscolherFoto;
    private javax.swing.JButton confirmaCadastroFazerCadastro;
    private java.awt.Label dataNascimentoFazerCadastro;
    private javax.swing.JComboBox diaNascimentoFazerCadastro;
    private java.awt.Label emailFazerCadastro;
    private javax.swing.JComboBox escolhePaisFazerCadastro;
    private java.awt.Label fotoFazerCadastro;
    private javax.swing.JComboBox mesNascimentoFazerCadastro;
    private java.awt.Label naturalidadeFazerCadastro;
    private java.awt.Label nomeFazerCadastro;
    private java.awt.Label paisQueTorceFazerCadastro;
    private java.awt.Label senhaFazerCadastro;
    private java.awt.Label separador1;
    private java.awt.Label separador2;
    private javax.swing.JTextField textEmailFazerCadastro;
    private javax.swing.JTextField textNaturalidadeFazerCadastro;
    private javax.swing.JTextField textNomeFazerCadastro;
    private javax.swing.JPasswordField textSenhaFazerCadastro;
    private javax.swing.JButton voltarFazerCadastro;
    // End of variables declaration//GEN-END:variables
}
